AQL (ArangoDB Query Language) হল ArangoDB এর নিজস্ব কোয়েরি ভাষা, যা SQL-এর মতো সহজ এবং কার্যকরী। এটি ডকুমেন্ট, গ্রাফ, এবং কী-মান ডেটা মডেলের উপর কাজ করতে পারে। AQL ব্যবহার করে ডেটা ফিল্টার, সেলেক্ট, আপডেট, ডিলিট এবং আরও অনেক কার্যক্রম সম্পাদন করা যায়।
AQL এর বৈশিষ্ট্য
JSON ভিত্তিক কোয়েরি
- AQL JSON ডেটা মডেলের সাথে সরাসরি কাজ করে।
SQL-এর মতো Syntax
- SQL-এর মতো কাঠামো হওয়ায় নতুন ব্যবহারকারীদের শেখা সহজ।
ডেটা ফিল্টারিং এবং ট্রান্সফরমেশন
- ডেটা ফিল্টার, গ্রুপিং, এবং ট্রান্সফর্ম করার জন্য ব্যবহার করা হয়।
গ্রাফ কোয়েরি সমর্থন
- ArangoDB-এর গ্রাফ ডেটা মডেলের জন্য ট্র্যাভার্সাল এবং শর্টেস্ট পাথ অপারেশন।
Flexible এবং শক্তিশালী
- জটিল ডেটাবেজ অপারেশনের জন্য Subqueries এবং Joins সমর্থন করে।
AQL এর ব্যবহার
AQL ব্যবহার করে নিম্নলিখিত কাজগুলো করা যায়:
- ডেটা সিলেক্ট করা: নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করা।
- ডেটা আপডেট এবং ডিলিট করা: ডেটার মান পরিবর্তন এবং ডেটা অপসারণ।
- গ্রাফ ট্রাভার্সাল: নোড এবং এজের উপর ভিত্তি করে গ্রাফ ডেটা পরিচালনা।
- ডেটা ফিল্টারিং এবং গ্রুপিং: Aggregation অপারেশন পরিচালনা।
AQL এর মূল গঠন
AQL Syntax সাধারণত SQL-এর মতো এবং নিচের উপাদান নিয়ে গঠিত:
FOR <variable> IN <collection>
FILTER <condition>
RETURN <result>
উদাহরণ:
১. একটি Collection থেকে সব ডকুমেন্ট রিটার্ন করা:
FOR doc IN myCollection
RETURN doc
২. নির্দিষ্ট শর্তে ডেটা ফিল্টার করা:
FOR doc IN myCollection
FILTER doc.age > 25
RETURN doc
৩. ডেটা গ্রুপিং এবং গণনা করা:
FOR doc IN myCollection
COLLECT status = doc.status WITH COUNT INTO count
RETURN { status, count }
AQL এর সুবিধা
সহজ এবং কার্যকরী
- ডেভেলপাররা SQL-এর মতো পরিচিত Syntax ব্যবহার করে সহজেই কাজ করতে পারে।
গ্রাফ এবং ডকুমেন্ট সমর্থন
- একই কোয়েরি ভাষায় গ্রাফ এবং ডকুমেন্ট ডেটা ম্যানিপুলেট করা যায়।
উচ্চ কার্যক্ষমতা
- JIT (Just-In-Time) কম্পাইলার ব্যবহারের মাধ্যমে দ্রুত কোয়েরি এক্সিকিউশন।
Nested এবং Complex Queries সমর্থন
- Subqueries এবং Nested কোয়েরি সহজেই করা যায়।
সারাংশ
AQL একটি শক্তিশালী এবং ডেভেলপার-বান্ধব কোয়েরি ভাষা, যা ArangoDB-এর মাল্টি-মডেল ডেটা মডেলের সাথে কার্যকরভাবে কাজ করে। এর ব্যবহার-সহজ Syntax এবং গ্রাফ ডেটা সমর্থন এটিকে অন্যান্য ডাটাবেস কোয়েরি ভাষার তুলনায় আরও বহুমুখী এবং কার্যকর করে তুলেছে।
AQL (Arango Query Language) ArangoDB এর নিজস্ব একটি শক্তিশালী কোয়েরি ভাষা, যা ডেটা পরিচালনা এবং বিশ্লেষণের জন্য ব্যবহৃত হয়। এটি SQL-এর মতো সিম্পল ও কার্যকর, এবং ArangoDB এর মাল্টি-মডেল ডেটাবেসের জন্য বিশেষভাবে তৈরি।
AQL এর মূল বৈশিষ্ট্য
SQL-এর মতো স্ট্রাকচার
- AQL অনেকটাই SQL-এর মতো দেখতে এবং ব্যবহার করতে সহজ।
মাল্টি-মডেল সমর্থন
- Document, Key-Value, এবং Graph মডেলের জন্য ব্যবহার করা যায়।
JSON ভিত্তিক আউটপুট
- AQL কোয়েরি থেকে JSON ফরম্যাটে আউটপুট পাওয়া যায়, যা API এবং অ্যাপ্লিকেশন ডেভেলপমেন্টে সহজে ব্যবহারযোগ্য।
ডেটা ম্যানিপুলেশন ও বিশ্লেষণ
- ফিল্টারিং, সোর্টিং, অ্যানালাইসিস, এবং ট্রান্সফর্মেশনের জন্য উন্নত কোয়েরি অপারেশন।
গ্রাফ ডেটা সমর্থন
- গ্রাফ ট্রাভার্সাল এবং জটিল সম্পর্ক বিশ্লেষণের জন্য আদর্শ।
AQL এর ব্যবহার
১. ডেটা নির্বাচন (SELECT Data)
FOR doc IN myCollection
RETURN doc
এই কোয়েরিটি myCollection এর সব ডকুমেন্ট ফেরত দেয়।
২. ফিল্টারিং (Filtering)
FOR doc IN myCollection
FILTER doc.age > 25
RETURN doc
এটি myCollection থেকে শুধুমাত্র তাদের ডকুমেন্ট ফেরত দেয়, যাদের age ২৫ এর বেশি।
৩. সোর্টিং (Sorting)
FOR doc IN myCollection
SORT doc.name ASC
RETURN doc
এই কোয়েরি name অনুযায়ী ডকুমেন্টগুলোকে বর্ণানুক্রমিকভাবে সাজায়।
৪. নির্দিষ্ট ফিল্ড নির্বাচন (Field Selection)
FOR doc IN myCollection
RETURN { name: doc.name, age: doc.age }
এই কোয়েরি name এবং age ফিল্ডগুলো সহ একটি JSON অবজেক্ট ফেরত দেয়।
৫. গ্রাফ ট্রাভার্সাল (Graph Traversal)
FOR vertex, edge IN 1..2 OUTBOUND 'vertices/A' GRAPH 'myGraph'
RETURN vertex
এটি myGraph এ vertices/A থেকে দুই স্তরের মধ্যে সম্পর্কিত নোডগুলো ফেরত দেয়।
৬. অ্যাগ্রিগেশন (Aggregation)
FOR doc IN myCollection
COLLECT status = doc.status WITH COUNT INTO count
RETURN { status, count }
এই কোয়েরি status অনুসারে গ্রুপ করে এবং প্রতিটি গ্রুপের ডকুমেন্ট সংখ্যা গণনা করে।
৭. আপডেট ও মুছে ফেলা (Update and Delete)
FOR doc IN myCollection
FILTER doc.age < 18
REMOVE doc IN myCollection
এটি myCollection থেকে তাদের ডকুমেন্ট মুছে দেয়, যাদের age ১৮ এর কম।
AQL ব্যবহার ক্ষেত্র
- ডকুমেন্ট ডেটা মডেল থেকে ডেটা নির্বাচন এবং বিশ্লেষণ।
- গ্রাফ ডেটাবেসে সম্পর্ক অনুসন্ধান এবং ট্রাভার্সাল।
- জটিল কোয়েরি ও সাবকোয়েরি পরিচালনা।
- JSON ফরম্যাটে ডেটা ম্যানিপুলেশন।
সারাংশ
AQL একটি শক্তিশালী কোয়েরি ভাষা যা ArangoDB এর মাল্টি-মডেল আর্কিটেকচারে ডেটা ম্যানেজমেন্ট সহজ করে। এটি SQL-এর মত ব্যবহারযোগ্য এবং JSON ভিত্তিক আউটপুট প্রদানের কারণে ডেভেলপারদের কাছে অত্যন্ত জনপ্রিয়।
AQL (ArangoDB Query Language) ArangoDB-এর নিজস্ব কোয়েরি ভাষা, যা ডেটাবেস থেকে ডেটা রিট্রিভ, ইনসার্ট, আপডেট এবং ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি SQL-এর মতো সহজ এবং ডেভেলপার-বান্ধব।
AQL এর মূল গঠন
AQL কোয়েরি গঠনের প্রধান উপাদান:
- FOR: ডেটা সংগ্রহের জন্য লুপ চালায়।
- FILTER: ডেটা ফিল্টার করার জন্য ব্যবহৃত হয়।
- RETURN: চূড়ান্ত রেজাল্ট প্রদান করে।
উদাহরণ:
FOR doc IN collection_name
FILTER doc.attribute == "value"
RETURN doc
বেসিক কোয়েরি উদাহরণ
1. ডেটা রিট্রিভ করা
Collection থেকে সমস্ত ডেটা রিট্রিভ করার জন্য:
FOR doc IN collection_name
RETURN doc
2. নির্দিষ্ট ডেটা ফিল্টার করা
FOR doc IN collection_name
FILTER doc.age > 25
RETURN doc
3. নির্দিষ্ট ফিল্ড রিটার্ন করা
FOR doc IN collection_name
RETURN doc.name
Document Filtering
সত্য/মিথ্যা কন্ডিশন চেক
FOR doc IN collection_name
FILTER doc.active == true
RETURN doc
মাল্টিপল কন্ডিশন
FOR doc IN collection_name
FILTER doc.age > 18 AND doc.country == "Bangladesh"
RETURN doc
রেঞ্জ কন্ডিশন
FOR doc IN collection_name
FILTER doc.salary >= 20000 AND doc.salary <= 50000
RETURN doc
Sorting এবং Pagination
ডেটা Sort করা
FOR doc IN collection_name
SORT doc.name ASC
RETURN doc
Pagination ব্যবহার
FOR doc IN collection_name
LIMIT 10, 20
RETURN doc
এখানে 10 হল Offset এবং 20 হল Limit।
Aggregation Queries
গণনা (COUNT)
FOR doc IN collection_name
FILTER doc.status == "active"
COLLECT WITH COUNT INTO total
RETURN total
গোষ্ঠীভুক্ত করা (GROUP BY)
FOR doc IN collection_name
COLLECT country = doc.country WITH COUNT INTO total
RETURN { country, total }
নতুন ডেটা ইনসার্ট করা
INSERT { name: "John Doe", age: 30, active: true } INTO collection_name
ডেটা আপডেট করা
FOR doc IN collection_name
FILTER doc.name == "John Doe"
UPDATE doc WITH { age: 35 } IN collection_name
ডেটা মুছে ফেলা
FOR doc IN collection_name
FILTER doc.age < 18
REMOVE doc IN collection_name
সারাংশ
AQL একটি শক্তিশালী এবং বহুমুখী কোয়েরি ভাষা যা সহজবোধ্য গঠন এবং SQL-এর মতো কার্যক্ষমতা সরবরাহ করে। এর FOR, FILTER, এবং RETURN স্টেটমেন্টের মাধ্যমে ডেটা পরিচালনা সহজতর এবং উন্নত হয়।
ArangoDB তে ডেটা ব্যবস্থাপনা এবং প্রক্রিয়াকরণের জন্য AQL (Arango Query Language) ব্যবহার করা হয়। ডকুমেন্ট Filtering, Sorting, এবং Pagination হল ডেটা ব্যবস্থাপনার গুরুত্বপূর্ণ অংশ, যা ডেটাবেসে দ্রুত এবং কার্যকরভাবে ডেটা পুনরুদ্ধারে সহায়ক।
Document Filtering
ফিল্টারিং ব্যবহার করে নির্দিষ্ট মানদণ্ড অনুযায়ী ডেটা নির্বাচন করা যায়।
উদাহরণ: নির্দিষ্ট মানের ফিল্টারিং
FOR doc IN myCollection
FILTER doc.age > 25
RETURN doc
ব্যাখ্যা:
myCollection: টেবিল বা ডকুমেন্ট কালেকশনের নাম।doc.age > 25: শুধুমাত্র তাদের নির্বাচন করবে যাদের বয়স ২৫ এর বেশি।
উদাহরণ: একাধিক শর্ত প্রয়োগ করা
FOR doc IN myCollection
FILTER doc.age > 25 AND doc.city == "Dhaka"
RETURN doc
ব্যাখ্যা:
ANDব্যবহার করে একাধিক শর্ত যোগ করা হয়েছে।- এই ক্ষেত্রে, বয়স ২৫-এর বেশি এবং শহর "Dhaka" হওয়া প্রয়োজন।
Document Sorting
ডকুমেন্টগুলোকে নির্দিষ্ট ক্রমে সাজানোর জন্য SORT ব্যবহার করা হয়।
উদাহরণ: এসেন্ডিং (Ascending) অর্ডার
FOR doc IN myCollection
SORT doc.name ASC
RETURN doc
ব্যাখ্যা:
ASC: নামগুলোকে A-Z ক্রমে সাজাবে।
উদাহরণ: ডিজেন্ডিং (Descending) অর্ডার
FOR doc IN myCollection
SORT doc.name DESC
RETURN doc
ব্যাখ্যা:
DESC: নামগুলোকে Z-A ক্রমে সাজাবে।
একাধিক ফিল্ডে সোর্টিং
FOR doc IN myCollection
SORT doc.age ASC, doc.name DESC
RETURN doc
ব্যাখ্যা:
- প্রথমে বয়স অনুযায়ী ASC ক্রমে সাজাবে, তারপর একই বয়সের ডকুমেন্টগুলো নাম DESC ক্রমে সাজাবে।
Document Pagination
ডেটার বড় সেট থেকে নির্দিষ্ট সংখ্যক ডকুমেন্ট পুনরুদ্ধার করতে Pagination ব্যবহার করা হয়। এটি সাধারণত LIMIT এবং OFFSET দিয়ে সম্পন্ন করা হয়।
উদাহরণ: পেজিনেশন প্রয়োগ করা
FOR doc IN myCollection
LIMIT 10
RETURN doc
ব্যাখ্যা:
- প্রথম ১০টি ডকুমেন্ট ফেরত দেয়।
OFFSET এবং LIMIT ব্যবহার
FOR doc IN myCollection
LIMIT 20, 10
RETURN doc
ব্যাখ্যা:
- ২০টি ডকুমেন্ট স্কিপ করে, পরবর্তী ১০টি ডকুমেন্ট ফেরত দেয়।
Filtering, Sorting, এবং Pagination একসঙ্গে ব্যবহার
FOR doc IN myCollection
FILTER doc.age > 25
SORT doc.name ASC
LIMIT 10, 5
RETURN doc
ব্যাখ্যা:
- ২৫-এর বেশি বয়সের ডকুমেন্টগুলো নাম অনুযায়ী ASC ক্রমে সাজানো হবে।
- প্রথম ১০টি ডকুমেন্ট বাদ দিয়ে পরবর্তী ৫টি ডকুমেন্ট ফেরত দেওয়া হবে।
সারাংশ
- Filtering ব্যবহার করে ডেটা নির্বাচন করা সহজ হয়।
- Sorting ডকুমেন্টগুলোকে প্রয়োজন অনুযায়ী সাজাতে সাহায্য করে।
- Pagination বড় ডেটা সেট থেকে নির্দিষ্ট অংশ দ্রুত এবং কার্যকরভাবে রিটার্ন করতে ব্যবহৃত হয়।
এই কার্যক্ষম ফিচারগুলো ArangoDB-কে ডেটাবেস পরিচালনার জন্য আরও কার্যকর করে তোলে।
Aggregation Queries ArangoDB-এর একটি শক্তিশালী ফিচার যা ডেটা বিশ্লেষণ ও সারাংশ তৈরি করার জন্য ব্যবহার করা হয়। ArangoDB-তে AQL (Arango Query Language) ব্যবহার করে বিভিন্ন প্রকার ডেটা অ্যানালাইসিস, যেমন গাণিতিক গড়, সংখ্যা গণনা, সর্বাধিক বা সর্বনিম্ন মান নির্ধারণ, এবং অন্যান্য জটিল অ্যানালাইসিস করা যায়।
Aggregation Queries-এর প্রধান কাজ
- Count: ডেটার সংখ্যা গণনা।
- Sum: নির্দিষ্ট ফিল্ডের মান যোগ করা।
- Average: গড় নির্ণয়।
- Min/Max: সর্বনিম্ন এবং সর্বোচ্চ মান নির্ধারণ।
- Group By: নির্দিষ্ট ফিল্ড অনুযায়ী ডেটা গ্রুপ করা।
- Collect: গ্রুপিং এবং ডেটা প্রসেসিং।
Aggregation Queries-এর উদাহরণ
১. ডেটা গণনা করা (COUNT)
নিচের উদাহরণে, একটি "employees" সংগ্রহ থেকে কতজন কর্মচারী আছে তা গণনা করা হয়েছে:
FOR employee IN employees
RETURN LENGTH(employee)
অথবা সরাসরি:
RETURN LENGTH(employees)
২. নির্দিষ্ট ফিল্ডের গড় নির্ণয় (AVERAGE)
কর্মচারীদের বয়সের গড় বের করতে:
FOR employee IN employees
RETURN AVERAGE(employee.age)
৩. সর্বনিম্ন এবং সর্বাধিক মান নির্ধারণ (MIN/MAX)
কর্মচারীদের সর্বনিম্ন এবং সর্বাধিক বয়স বের করতে:
RETURN {
minAge: MIN(FOR employee IN employees RETURN employee.age),
maxAge: MAX(FOR employee IN employees RETURN employee.age)
}
৪. ফিল্ডের মান যোগ করা (SUM)
কর্মচারীদের মোট বেতন যোগ করতে:
FOR employee IN employees
RETURN SUM(employee.salary)
৫. ডেটা গ্রুপিং করা (GROUP BY)
গ্রুপিং এবং প্রতিটি গ্রুপে আইটেম গণনা করতে:
FOR employee IN employees
COLLECT department = employee.department WITH COUNT INTO count
RETURN { department, count }
বিবরণ:
COLLECT: "department" ফিল্ড অনুযায়ী ডেটা গ্রুপ করে।WITH COUNT INTO count: প্রতিটি গ্রুপে আইটেম সংখ্যা গণনা করে।
৬. একাধিক Aggregation পরিচালনা করা
একটি কোয়েরিতে একাধিক ফাংশন ব্যবহার করা:
FOR employee IN employees
COLLECT department = employee.department INTO group
RETURN {
department,
totalSalary: SUM(group[*].employee.salary),
avgSalary: AVERAGE(group[*].employee.salary),
employeeCount: LENGTH(group)
}
বিবরণ:
SUM: বেতনের যোগফল।AVERAGE: গড় বেতন।LENGTH: প্রতিটি গ্রুপে কর্মচারীর সংখ্যা।
Aggregation Queries-এর প্রধান সুবিধা
- ডেটা অ্যানালাইসিস সহজ: বড় ডেটাসেট থেকে কার্যকর তথ্য বের করা যায়।
- কাস্টম গ্রুপিং এবং প্রসেসিং: "COLLECT" ব্যবহার করে ডেটা গ্রুপ এবং প্রসেস করা যায়।
- পারফরম্যান্স অপ্টিমাইজড: ArangoDB-এর ইনডেক্সিং এবং প্যারালাল প্রসেসিং ব্যবস্থার মাধ্যমে দ্রুত Aggregation সম্ভব।
সারাংশ
Aggregation Queries ArangoDB-তে জটিল ডেটা অ্যানালাইসিস এবং গ্রুপিংয়ের জন্য অপরিহার্য। "AQL"-এর সাহায্যে বিভিন্ন ধরণের গণনা, গড় নির্ণয়, গ্রুপিং এবং ডেটা বিশ্লেষণ করা সহজ এবং কার্যকর। এটি ডেটা-চালিত সিদ্ধান্ত গ্রহণের জন্য একটি শক্তিশালী হাতিয়ার।
Read more